package colecciones.tests;

import static org.junit.Assert.assertEquals;

import java.util.ArrayList;

import org.junit.Before;
import org.junit.Test;

import colecciones.bloques.BloqueExec;
import colecciones.colecciones.MiColeccion;


public class ForEachTest {
	private MiColeccion<ArrayList<String>> miColeccion;

	@Before
	public void before() {
		this.miColeccion=new MiColeccion<ArrayList<String>>();
		for(int i=0; i<10; i++) {
			this.miColeccion.add(new ArrayList<String>());
		}
	}
	
	@Test
	public void testForEachAfectaEjecutaParaTodosLosElementos() {
		// Agregamos una cadena "hola" en todos los arrays.
		this.miColeccion.forEach(new BloqueExec<ArrayList<String>>() {
			@Override
			public void exec(ArrayList<String> unElemento) {
				unElemento.add("hola");
			}
		});
		
		// Comprobamos que todos los elementos sean arrays con una cadena "hola".
		int cant=0;
		ArrayList<String> unElemento;
		while((unElemento=this.miColeccion.next())!=null) {
			assertEquals("El elemento debe ser un array conteniendo la cadena hola.", "hola", unElemento.get(0));
			cant++;
		}
		assertEquals("En total deben haber 10 elementos", 10, cant);
	}

}
